home *** CD-ROM | disk | FTP | other *** search
/ SGI Developer Toolbox 6.1 / SGI Developer Toolbox 6.1 - Disc 1.iso / toolbox / documents / optimization / rld.Overview.txt < prev    next >
Text File  |  1996-11-11  |  5KB  |  194 lines

  1.  
  2.  
  3.     The following general information is culled from dso(5), ld(1), rld(1).
  4.     For much more detail and specifics it is essential to become well-versed
  5.     with all of these as well as elf(5), elfdump(1), and dlopen(3).
  6.  
  7.  
  8.  
  9.  
  10.                 Tasks performed by the dynamic linker (RLD)
  11.                  -------------------------------------------
  12.  
  13.         Basic (QUICKSTART):
  14.       
  15.         *   Maps shared objects in, as specified in the liblist.  
  16.             (Objects marked with the delay-load flag would not be 
  17.             loaded until a symbol cannot be resolved without it.)
  18.       
  19.             default path: /usr/lib:/lib
  20.       
  21.             Can override default path by:
  22.              * rpath (set in main executable)
  23.              * LD_LIBRARY_PATH (environment variable)
  24.       
  25.       
  26.         *   Resolves all unresolved DATA symbols  (GOT value == 0)
  27.       
  28.       
  29.         *   Resolves all conflicting symbols as appeared in the 
  30.             conflict list
  31.       
  32.       
  33.         *   Fixes up relocations for the above symbols
  34.       
  35.       
  36.         *   Executes all .init sections
  37.       
  38.       
  39.  
  40.  
  41.  
  42.  
  43.                        How RLD determines QUICKSTART
  44.                        -----------------------------
  45.  
  46.    
  47.  
  48.           In gerenal, RLD assumes QUICKSTART unless:
  49.         
  50.         *  the executable or shared object does not have the 
  51.            RHF_QUICKSTART bit set (determined by the static linker)
  52.         
  53.         
  54.         *  the timestamp or checksum value of a shared object does 
  55.            not match that as specified in the liblist
  56.         
  57.         
  58.         *  RHF_GUARANTEE_INIT or RHF_GUARANTEE_START_INIT bit is 
  59.            set (set during static link-time or by pixie)
  60.         
  61.         
  62.         *  a shared object is MOVED from its QUICKSTART location
  63.         
  64.         
  65.  
  66.  
  67.  
  68.  
  69.   Tasks performed by RLD for non-QUICKSTART (in addition to basic operations)
  70.   ---------------------------------------------------------------------------
  71.         
  72.         
  73.  
  74.         *  If  only TIMESTAMP is changed:
  75.         
  76.            -- Resolves all UNDEF symbols, both TEXT and DATA (TEXT 
  77.               is a lot less work because of lazy text resolution)
  78.         
  79.  
  80.            -- Resolves all conflicting symbols
  81.  
  82.         
  83.            -- Resolves relocations for the above symbols
  84.  
  85.         
  86.            -- Allocate memory space for COMMON symbols if necessary
  87.         
  88.         
  89.         
  90.  
  91.         *  If  only CHECKSUM is changed:
  92.         
  93.            -- Resolves all external symbols, both defined and undefined
  94.         
  95.  
  96.            -- Resolves relocations from above.
  97.  
  98.         
  99.            -- Allocate COMMON
  100.         
  101.  
  102.         
  103.         *  If a shared object is MOVED:
  104.         
  105.            -- Adjusts all addresses for the MOVED object including 
  106.               locals and externals
  107.         
  108.  
  109.            -- Resolves all UNDEF symbols, both TEXT and DATA
  110.  
  111.         
  112.            -- Resolves conflicts
  113.         
  114.  
  115.            -- Resolves relocations
  116.         
  117.  
  118.            -- Allocates COMMON
  119.         
  120.         
  121.         
  122.         
  123.         
  124.         
  125.                      Environment variables for RLD
  126.                      -----------------------------
  127.          
  128.         
  129.  
  130.         *  _RLD_PATH  -- setting the pathname of rld to be used.   
  131.              Default is /lib/rld.
  132.         
  133.            e.g.  setenv _RLD_PATH /usr/tmp/rld
  134.         
  135.            
  136.            To enable printing of informational msgs, must use rld.debug 
  137.        (usually resides under /usr/lib)
  138.         
  139.            e.g.  setenv _RLD_PATH /usr/lib/rld.debug
  140.         
  141.         
  142.         
  143.         *  _RLD_ARGS  -- getting informational msgs from RLD
  144.  
  145.         
  146.            -quickstart_info  
  147.                       tells you whether QUICKSTART has failed.
  148.         
  149.              e.g.
  150. 3088:env: [rld] Quickstart failed for object /usr/lib/libc.so.1: TIMESTAMP CHANGED from that expected by env
  151.         
  152.            -time_summary
  153.                         Runtime summary
  154.         
  155.              e.g.
  156.              3100:env: Summary of timing:
  157.              3100:env:   In rld:
  158.              3100:env:     0.000000 s user time
  159.              3100:env:     0.010000 s system time
  160.              3100:env:     0.150000 s clock time
  161.              3100:env:   In shared object initialization code:
  162.              3100:env:     0.000000 s user time
  163.              3100:env:     0.000000 s system time
  164.              3100:env:     0.000000 s clock time
  165.              3100:env:   In user program:
  166.              3100:env:     0.000000 s user time
  167.              3100:env:     0.010000 s system time
  168.              3100:env:     0.010000 s clock time
  169.         
  170.         
  171.         
  172.         
  173.         
  174.         
  175.                            Requickstart tools
  176.                ------------------
  177.         
  178.         
  179.         
  180.         *   Requickstart -- performs similar operations like RLD, just 
  181.                 more restrictive, and recreates new shared 
  182.                 obj and executable file.
  183.                                   
  184.         
  185.         
  186.         *   RecordObjects -- Used during installation.  Save info of 
  187.                  name, timestamp, checksum and rpath for 
  188.                  each shared obj.
  189.         
  190.         
  191.         
  192.         *   RequickstartAll -- Reads info created by RecordObjects and
  193.                                call Requickstart appropiately.
  194.